CIS 4150 Software Engineering
Fall 2025
(NOTICE: there are parallels with CIS 4120, System Analysis) 

Class: TuTh 2:00-3:15 PM
ONLINE
BOOK:
Software Engineering, 10th by Sommerville
Instructor: Dr. Keith Tookey
Office: Cyberspace
Email: keith.tookey@vtc.edu 
Office Hours: after class, or by appointment

PLEASE NOTE:
This class will be a synchronous FLIPPED class.
This means that, anything that counts as ‘lecture’, is likely to be recorded, to be viewed outside of class.  This frees class time to do interactive work, in particular, the class project.
The professor will usually attend by ZOOM.
Students are encouraged to meet together in groups;
Group work can be done more effectively in person.
However, it is acceptable to attend class by ZOOM.
 
Overview & Outcomes:
This course will introduce you to the concepts of Software Engineering. 
Students successfully completing this course will ideally be able to: 
Understand the functions of a software engineer 
Appreciate the differences in development practices for small vs. large projects 
Understand the differences in approaches used for in-house vs. outsourced 
Identify and understand practices used in all phases of a development project 
Understand and appreciate the role of a project manager 
Articulate the various aspects of integration, testing strategies, and capacity planning 
Appreciate the importance of quality, and metrics
Communicate technical information effectively, orally, and in writing 
Learn effective teamwork and presentation skills 

Class work: The best way you learn to design systems is… by designing systems!  The same applies to other homework for this class.  Learn by doing! Individual work should be done without outside help.  Your solution should NOT match anything on the Internet or any work done by a classmate.

Group Work – There will be times when the class will be working in small groups to solve problems. Groups work together and hand in one solution.  The semester project will be done in groups, which will coordinate to do the larger project.  Each member of the group must INDIVIDUALLY email to the professor your estimation of how much work was done by each member of the group.  Percentages MUST add up to 100%. You do not get a grade for group work until after you have submitted your estimated percentages.  If you do a group project as an individual for any reason, say “DONE as INDIVIDUAL” instead of submitting percentages.
Peer estimations for the class project should be done at least monthly.
Exams: Exams may include short algorithmic exercises, tasks to perform, and/or written questions designed to assess conceptual knowledge given on or about the dates indicated in class. There will be two exams.
The grade for the project will count as an exam grade.  Normally, the grade will be 60% exams, 30% individual and group work, and 10% attendance and class participation.  Roughly, 90% will be the lowest A, 80% the lowest B, etc.  Plus and Minus grades will be determined statistically.

Due Dates and Procrastination:
The target grade for completion of homework is ONE WEEK from when it is assigned, except for The Project.  No credit will be given for assignments handed in later than TWO WEEKS, unless otherwise announced.  Assignments do not complete themselves—if you are having difficulty, ask for help!
Most homework can be submitted by email. Include the name of your class (e.g. SE) and your name as well as the assignment or topic in the subject of the email.
INCLUDE YOUR NAME in any file you send.

WARNING:
One of the easiest ways to fail this course is to put off doing required work. Procrastination is usually fatal in this class.  If you are having trouble completing work, the BEST thing to do is to go to office hours early and often.   The WORST thing to do is to wait, hoping the homework will magically complete itself.  It won’t.  Assignments should be completed within two weeks of being assigned.

Attendance Policy:
Class attendance is required. Synchronous ZOOM counts as attendance, if you are in the ZOOM room by the beginning of the class period.  If students attend in groups, one person in each group will sign in, and report who is present. The professor will usually attend by synchronous ZOOM.
There is no such thing as an excused absence. You are responsible for material covered and announcements made whether you are there or not. Attendance and class participation are included in your grade. It is solely the option of the instructor what to do about classes missed for any reason. If you MUST miss, an E-mail to my office must be made as soon as you know you will miss. If you miss class for ANY reason, you are still responsible for learning missed material. Most class sessions will be recorded if possible, but some things, including group work, are very difficult to make up.  If you tell me at class time of a future absence, please also send me an email. Religious observances and College sponsored events may be a valid reason to miss class, but must be arranged PERSONALLY BY YOU in advance, and you still need to learn missed material. Missing a day on which there is small group work or a lab means that you need to do the work by yourself instead of with help, or get a ZERO for the assignment.  Missing a day of project work needs to be worked out within your project group.

CANVAS and email:
Announcements for this class will be made in class, by email, or via CANVAS.  You are responsible for knowing anything that is posted on CANVAS for this class. 

Failure to Complete Work:	
Anyone who fails to do required work, misses an exam, has inappropriate classroom conduct, or has serious attendance problems, will be warned and if the problem is not corrected will be failed.  Failure to hand in or present an assignment is sufficient grounds to be dropped.  (Keep a backup copy of anything important.  NEVER hand in the only copy. Consider emailing drafts of work to yourself.)  

Makeup Exams:
If you need to take an exam at a different time, you must arrange it BEFORE the week of the exam.  If you will miss due to unforeseen emergency, you MUST email me as soon as you know you will miss, and not later than the time of the exam.  An exam may be taken by ZOOM, but you must be in a breakout room, have your camera on, and have your screen shared.

Academic Integrity:
Academic integrity is a core value which insures respect for all. VTC expects that students will conduct themselves in an honest and ethical manner and respect the intellectual work of others.  Please ask about my expectations regarding permissible or encouraged forms of student collaboration if they are unclear.   At minimum, all sources of help must be reported.  The minimum penalty for academic dishonesty is a 0 for the work in question.  Academic Honesty violations will be reported.
Collaboration in a classroom small group project is perfectly fine; forming study groups is an excellent idea; collaboration on individual assignments is academic dishonesty unless approved and reported in advance.

Commitment to a Positive Learning Environment:
If you are picked on, bullied, harassed, discriminated against, assaulted, or suffer any other problem which interferes with your participation in the learning environment, please contact the appropriate office.  Faculty are legally required to report problems, such as physical assault, if they become aware of them.  Your instructor is willing to help, or find you help, if you need it. Every student deserves equal opportunity to participate in the class. 

Classroom and Student Conduct:
Please do your part to make the classroom a constructive learning environment for everyone by restraining from engaging in distracting behaviors. Unprofessional behavior by students during the course is grounds for dismissal. 
Use of cell phones or any other distraction from class counts as an absence.  Please be on time.  Be professional.     If your behavior or attire becomes a distraction in the classroom, you will be warned, and if the problem is not corrected, you will be removed from the class.

Punctuality:
Showing up late for class is disruptive, and you risk missing important announcements and foundational material. I normally start on time and use the full class period.

Center for Academic Success
All students are strongly encouraged to utilize available resources, for help in the writing and revision process. In addition to offering invaluable tutoring services in English, Student Support Services provides all students access to innovative assistive technology practices and systems. The Center for Academic Success operates facilities in Randolph Center (Conant Hall), and in the 400 Building of the Williston Campus. Appointments are available on a regular basis, free of charge. Please visit them for more information, either in person or via their presence on the Vermont Tech website.   

Accommodations for learning disabilities
Anyone who feels they may be eligible for an accommodation based on the impact of a disability should contact me to arrange an appointment to discuss the course format and the sorts of support that may be needed.  I rely on the Learning Specialist’s Office for assistance in verifying the need for accommodations and developing accommodation strategies.
Robin Goodall, Vermont Technical College’s Learning Specialist is available at the Center for Academic Success, (802) 728-1278, or by email at rgoodall@vtc.edu. 
Additional resources:
If anyone needs additional resources, please feel free to ask the professor for help in obtaining services. 

In general, for assignments:
Keep your answer down to 3 typed double spaced pages at the MOST.

In general, for exam questions:
You should spend at least five minutes outlining or thinking about your answer, and at least ten minutes writing your answer.  If you finish your exam in less than one hour, your answers are probably not of sufficient depth. 

Grading will be based on:
Answering the question that was asked with logical thought
Showing understanding of Software Engineering
Showing understanding of concepts covered in class
A well written answer in English

The Project

This semester, we will have a class group project.  The group project will be to design software for a small medical clinic.  Aspects of the clinic project may include:

Appointments
	Different appointment types
	Different appointment durations
	Appointments with different providers
Medical records
Diagnosis, 
medication, 
treatment
appointment notes
Billing
Insurance
Medicare/Medicaid
Cash, check, credit
Debt collections
Pharmacy
	Ordering
	Billing
	Drug interactions

Stakeholders for the system include office staff, doctors, nurses, insurance companies.

Students will form groups to create a minimum subset system for a small clinic.  You must pick a relevant aspect of the system and submit it for approval as a group.  You will be called on to do Software Engineering as a group for this problem/challenge/ opportunity/topic you have chosen.  You must footnote any idea that is not yours, and include a references section.  Please note that I have not yet seen a good paper that was less than 10 pages or more than 30 pages double spaced.  Your group should be prepared to talk for 20 minutes MINIMUM to the class on your scheduled day of presentation, which will most likely be during the last week of classes for the semester.  Presentations are just as much part of class as lecture, and will be tested on. This project should be the kind of quality work you would be proud to show prospective employers.  The project shall be equal in points to an exam.

In order to free class time to work on the project, we will be doing ‘flipped classes’.
That is, lectures will be recorded, which you can watch on your own time.
(Please note: there will be small group exercises to work through course material.)

Project Important Dates

Project Topic The project topic is to create software for a small medical clinic.
GOOD NEWS: Last year had the same topic!
However, their work, great as it was, needs improvement!
During the first two weeks of class, you will form groups, and select an aspect of the project.
Everyone must be in a group for the project.
For convenience, it is acceptable for a group to be all Williston or all Randolph.
However, it is likely that there will be at least one ZOOM group.

First Project Check in END OF September
Take a moment, and as a group, email me what progress you have made on your project.
Show your understanding of Software Engineering (as discussed so far this semester) as well as giving me an update on how your project idea has evolved 
What you have accomplished so far? What are your plans for finishing your project?
As an individual:
Email me what you, personally did for the project group.
Also, give your best estimate of what percent work was done by each member of your group.

Second Project Check in: See description of First Check In

Third Project Check in November (right BEFORE Thanksgiving)
It is almost time for Thanksgiving Break, and most of the semester is now in the rear-view mirror.  
AS A GROUP:
Take a few minutes, and email me about the current status on your project.
Show your understanding of Software Engineering (as discussed so far this semester) 
as well as giving me an update on: how your project idea has evolved.
What you have accomplished so far? How has your project idea changed since you first proposed it?
What your plans for finishing your project? 
AS AN INDIVIDUAL:
If you have learned anything about software engineering about doing this project (so far), what have you learned?
If you have benefitted from doing the project in other ways, how has it benefitted you?
Also, give your best estimate of what percent work was done by each member of your group.

Final Project Check in:
As a group, prepare presentation.
As an individual:
Email me what you, personally did for the project group.
Also, give your best estimate of what percent work was done by each member of your group.
DUE: last day of semester BEFORE finals.

Project Presentations: Be ready to present as groups by Final EXAM time.
ALL groups should be ready to present at that point.  
Some of you may choose to use Power Point; some may use demonstrations; other approaches are allowed.  All of you will want to convince the client (and the professor) that you did a GREAT job on your project.

Project Final Submission: 
Each component of the system should be ready for integration and testing by early December.
The groups will have to work out an integration and testing plan in advance.
Submit your final group write up by December 12th.

The group writeup should include mention of who worked on which part(s) of the project.
Submit, AS AN INDIVIDUAL, what percentage of the whole project was done by each member of your group, in your estimation.  (In a real project, it is never the case that all people contributed exactly equally.)

Every member of the class will also be asked to estimate how much of the WHOLE project was covered by each group.
TuTh Schedule
Classes are expected to meet:
After chapters 1-4, do group work 1 (1 day)
After chapters 6-9, do group work 2 (1 day)
After chapters 22-25, do group work 3 (1/2 period to work, ½ period to present)
After chapters 10-14. System Necessity chapters, do group work 4
At end of semester, do group work 5 (if time allows)
After 15-21 do exam review
Do project presentations

Take final

Software Engineering, Assignment 0
Software Engineering focuses, of course, on creating computer packages.
Send me an email with your background.
Be sure to discuss your programming background, but add anything you like.
You may if you wish include a ‘selfie’ picture.

Software Engineering, Small Group Exercise 1
We have now discussed chapters 1-4, including Waterfall and Agile modeling.  Requirements Engineering is of course how you set up to begin a project.  It has been suggested that the Course Management System at Very Terrific College (VTC) needs to be revised.  (Think of CANVAS).  In your team of two or three people, OUTLINE how you would go about the Requirements Engineering for this (potential) project.  
How would you find out the (functional and non-functional) requirements?
How would you organize (specify) the proposed (outline for) the system?
How would you validate your proposal?

Prepare the best outline you can in the time required.  You have 45 minutes.
It is NOT necessary to complete a full design. You are to OUTLINE how you will go about GETTING a design.
If you do not participate live in class, you should complete the exercise on your own.

Software Engineering, Assignment 1:
We have now discussed classic software production (e.g. the waterfall model) and Agile Software development.  Consider a project you have done.  (Please choose either a LARGE project you have done, or the most widely USEABLE project you have done.)  IF you have only done projects for classes, choose the LARGEST or HARDEST class project relevant to software design that you have done.
1. What was the project?  
2. How was it ACTUALLY developed?  
Compare YOUR development process to the classic Waterfall model.
Compare YOUR development process to the classic Agile model.
(Show your understanding of the big ideas of each classic approach in your answer.)
3.  What would you do differently (in the process of development) if you were to redo the project now? 
(Or, why wouldn’t you do anything different?)
4. What would you differently (in the process of development) if your project EITHER were similar, but much greater in scope; OR 						
were similar, but involved a much larger team?
(Show your understanding of the big ideas of each classic approach in your answer.)

In your next group project meeting, plan how to do Requirements Engineering for your aspect of the class project.

Software Engineering, Small Group Exercise 2:  Requirement Modelling

Choose ONE of the following:
1.  VTC has decided to redo its registration and enrollment system.
2. Your favorite organization (you must be VERY familiar with how the organization works) needs a new computer system.  
3. You favorite company (which you have worked for, or are VERY familiar with its internal operations) has decided it needs a new computer system.  

Do preliminary Requirements Engineering for your choice (1,2, or 3 above).
Create the appropriate preliminary system models for your choice (1,2, or 3 above).

Write up your work.  In your work you should be sure to demonstrate:
You know what Requirements Engineering is, and how to do preliminary elicitation of functional and non-functional requirements.
You know what System Modelling is, how to choose appropriate models, and how to make the appropriate diagrams for your system. I expect to see some (draft) diagrams.

Your write-up should be not more than 10 pages (typed, double space) but your draft diagrams do not have to be included in those 10 pages.

In your next group project meeting, begin doing Requirements Engineering for your aspect of the class project.

Software Engineering, Small Group Exercise 3:  Design and Implementation
(chapters 6 to 9)
Part I:
Assume the decision has been made to start a “Rent A Student” business.  Assume students volunteer to be hired to do such things as cooking, cleaning, carrying, mowing, shoveling, babysitting, etc.
What should the system architecture look like?
What non-functional requirements may be important in this situation?
What different view(s) of this system may be important?
Which architectural pattern seems appropriate?
How do you plan to implement?  
Discuss the issues as needed, as time allows.  Group notes may be shared with group members.
In your discussion, review principles of Architectural Design, and Implementation.

Part II:
You now have a design plan for the “Rent A Student” business.
Design a plan to debug your system, so that it can be implemented successfully.
In your discussion, review principles of Software Testing and Software Evolution as appropriate.

Submit your group notes.  They do not have to be in formal form. I only need one submission from each group. Please feel free to share your group notes among your group members.
You should be prepared to discuss your plans during the next class meeting.
For EACH member of EACH group, email your instructor what percentage of work you believe was done by each person.  Do not send your percentages to the other members of your group.  
For example, in a three person group:
Moe thinks he did 60% of the work, while Larry and Curly each did 20% of the work.

Software Engineering Assignment 3: Design

Your group discussed a “Rent A Student” business, where students volunteer to be hired to do such things as cooking, cleaning, carrying, mowing, shoveling, babysitting, etc. You also came up with a plan to implement and test your system.

On reflection, do you see any errors in what your group did?
Do you see any improvements to make in what your group did?
If you make a change to what your group did, explain why.  
If you did not, explain why you think the group design is great.

Either way , write your perspective on the design process, using the group work as an example,  paying particular attention to principles of Architectural Design, Implementation and Testing. 

In your next group project meeting, begin discussing design for your aspect of the class project.

Software Engineering, Small GROUP Exercise 4: Management
5 groups: 
Project Management, Project Planning, Quality Management, Configuration Management, Agility

Project Management:
In what ways is (or is not) Project Management necessary to do Project Planning,
Quality Management, and Configuration Management?
How important is Project Management compared to Project Planning,
Quality Management, and Configuration Management?

Project Planning:
What would the development process be like without Project Planning?
Given your answer, how important is Project Planning compared to Project Management,
Quality Management, and Configuration Management?

Quality Management:
What is the role of Quality Management in the development process?  What would happen if Quality Management was not done?  Given your answer, how important is Quality Management compared to Project Management, Project Planning, and Configuration Management?

Configuration Management:
What is the role of Configuration Management in the development process?  What would happen if Configuration Management was not done?  How many products are continuously updating?  Given your answer, how important is Configuration Management compared to Project Management, Project Planning, and Quality Management?

Agility:
For each of the topics, Project Management, Project Planning, Quality Management, Configuration Management, identify how they are (or not) different using flexible models such as Agile, as discussed.  

Each group will present the arguments in favor of their approach.
Students will be allowed to vote on which group (that they were NOT in) had the most compelling argument.

Software Engineering Assignment 3: Management 
Individual Assignment: 
What skills are necessary in a development team in order for it to be well managed, overall? 

In your next group project meeting, begin discuss how Management is/should be/will be handled for your aspect of the class project.

Software Engineering, Small GROUP Exercise 5: System Necessity
There are five group topics: dependable, reliable, safe, secure, resilient. We will call those the ‘NECESSITY’ attributes, because some applications MUST be TOPIC (dependable, reliable, safe, secure, OR resilient).
You are assigned to a group. Your group will present your findings to the class on the next class day.
Part I:
Identify an application, or needed system, where YOUR TOPIC is more important than the other four group topics, in your opinion.  That is, the system being good for YOUR TOPIC (dependable, reliable, safe, secure, OR resilient) is more important than any of the other four.
Be prepared to explain why. Be sure all members of your group know the answer(s).
Part II:
Identify at least three approaches you recommend using to make sure your system is as TOPIC (dependable, reliable, safe, secure, OR resilient) as possible. Be sure all members of your group understand the approaches.
Part III:
What affect do your approaches have on your application with respect to the OTHER FOUR ‘necessity’ attributes?  Is your application better or worse in each of the other areas because of your recommended approaches? Why or why not?
You have one day to work in your group, and then we will have one day for class discussion.
If you are 'off line', you will STILL be assigned one of the five groups. Your report may be made available to the class for comments.

Software Engineering Assignment 5: SYSTEM NECESSITY 

Explain your thoughts, as an individual, about the interaction between the five topics. after having heard presentations on all five topics.
Which of the approaches discussed should be done for all applications?
Which of the approaches should only be used when there is a critical need?
Send by email your impression of how much work was done by each member of your group. Percentages must add to 100% and names must be included.
Send your individual reflection in by email WITHIN ONE WEEK OF CLASS DISCUSSION.

In your next group project meeting, begin to discuss how dependable, reliable, safe, secure, resilient are important for your aspect of the class project.  How will you handle design based on your discussion?

Software Engineering, Small Group Exercise 6: Software Testing

Assume that back in Ancient History (2009) a Web based calculator was designed. (prototype interface shown.) The purpose of the calculator was to allow the students to do math problems, and it would track key strokes, comparing student work to sample solutions using artificial intelligence techniques. Students would be able to get immediate feedback to their homework problems, while faculty would be able to get reports on what kind of errors students were making.
‘Instructions’ is a popup text box. ‘Select problems’ lets you select a particular exercise in the class.
‘GradeThis’ records and sends your answer, and gives you feedback.
Long text boxes at top record your keystrokes. 
Long text boxes just above the calculator buttons are the calculator display.
All calculator buttons generate a character, which are processed by the calculator app to generate answers to calculations.
In your small group, design a plan to debug this prototype.
Your group should submit a joint answer to this question.
While you will not be required to make a formal presentation as a group, you should be prepared to discuss your plan next class.

In your next group project meeting, begin to discuss how your aspect of the class project.  How will you handle testing based on your discussion?